package com.learning.platform.enums;

/**
 * 查询意图枚举
 * 用于识别用户查询的类型和意图
 */
public enum QueryIntent {
    /**
     * 编程相关问题
     */
    PROGRAMMING("编程相关", "涉及代码、编程语言、算法、数据结构等技术问题"),
    
    /**
     * 学习相关问题
     */
    LEARNING("学习相关", "关于学习方法、学习计划、课程内容等教育问题"),
    
    /**
     * 代码调试
     */
    CODE_DEBUG("代码调试", "代码错误分析、调试帮助、错误修复"),
    
    /**
     * 代码审查
     */
    CODE_REVIEW("代码审查", "代码质量分析、最佳实践建议、代码优化"),
    
    /**
     * 概念解释
     */
    CONCEPT_EXPLANATION("概念解释", "编程概念、术语解释、原理说明"),
    
    /**
     * 项目帮助
     */
    PROJECT_HELP("项目帮助", "项目开发指导、架构设计、技术选型"),
    
    /**
     * 通用问题
     */
    GENERAL("通用问题", "其他非编程相关的一般性问题");
    
    private final String displayName;
    private final String description;
    
    QueryIntent(String displayName, String description) {
        this.displayName = displayName;
        this.description = description;
    }
    
    public String getDisplayName() {
        return displayName;
    }
    
    public String getDescription() {
        return description;
    }
    
    /**
     * 判断是否为编程相关意图
     */
    public boolean isProgrammingRelated() {
        return this == PROGRAMMING || this == CODE_DEBUG || 
               this == CODE_REVIEW || this == CONCEPT_EXPLANATION || 
               this == PROJECT_HELP;
    }
    
    /**
     * 判断是否需要专业增强
     */
    public boolean needsExpertEnhancement() {
        return isProgrammingRelated() || this == LEARNING;
    }
}
